package top.lshaci.learning.springboot.jpaquerydsl.core;

import com.querydsl.core.types.OrderSpecifier;
import com.querydsl.core.types.dsl.EntityPathBase;

/**
 * DslQuery
 *
 * @author lshaci
 * @since 1.0.0
 */
public interface DslQuery {

    /**
     * 空的排序对象
     */
    OrderSpecifier<?>[] ORDER_EMPTY = new OrderSpecifier<?>[0];

    /**
     * 数据开始位置
     *
     * @return 数据开始位置
     */
    int offset();

    /**
     * 数据条数
     *
     * @return 数据条数
     */
    int limit();

    /**
     * 排序方式
     *
     * @return 排序方式
     */
    OrderSpecifier<?>[] sort();

    /**
     * 默认查询 DSL 查询实体
     *
     * @param <Q> 实体类型
     * @return DSL 查询实体
     */
    <Q extends EntityPathBase<?>> Q fromObj();

}
